1. Technical Field
This disclosure generally relates to processors, and more specifically relates to out-of-order (OOO) processors.
2. Background Art
Processor architectures have become very sophisticated. Out-of-order (OOO) processors include multiple instruction execution pipelines and processing queues that process multiple instructions in parallel. An instruction sequencing unit in an OOO processor takes dispatched instructions and checks their dependencies to see if all older instructions with respect to a current instruction have delivered, or may predictably soon deliver, results of these older instructions that are needed before the current instruction can execute properly. When all dependencies have been satisfied, the instruction is ready to issue, and is issued as soon as possible, even when the instruction occurs in the code after other instructions that are still being processed. Because instructions can be issued out of order when compared to their order in the computer program, this type of processor is referred to in the art as an out-of-order (OOO) processor.
An Issue Queue in an OOO processor selects the next instruction to execute in a set of pipelines. There may be more than one issue queue, each feeding one or more execution pipelines. Issue Queues track dependencies such that instructions may be issued when their source operands are ready. In high-frequency, high-performance processor designs, the communication of dependency information may lead to a lost cycle when an instruction that produces an operand value is used by the following instruction. This problem with back-to-back (B2B) instructions thus creates latency in the processor.